const express = require('express');
const router = express.Router();
const { body } = require('express-validator');
const videoController = require('../controllers/videoController');
const authMiddleware = require('../middleware/auth').authMiddleware;
const adminMiddleware = require('../middleware/auth').adminMiddleware;

// 上传视频（需要认证）
router.post('/', [
  authMiddleware,
  body('title').notEmpty().withMessage('视频标题不能为空').isLength({ max: 200 }).withMessage('标题长度不能超过200个字符'),
  body('video_url').notEmpty().withMessage('视频URL不能为空').isURL().withMessage('视频URL格式不正确'),
  body('description').optional().isLength({ max: 1000 }).withMessage('描述长度不能超过1000个字符')
], videoController.createVideo);

// 获取视频列表
router.get('/', videoController.getVideos);

// 获取单个视频详情
router.get('/:id', videoController.getVideoById);

// 更新视频信息（需要认证且只能更新自己的视频）
router.put('/:id', [
  authMiddleware,
  body('title').notEmpty().withMessage('视频标题不能为空').isLength({ max: 200 }).withMessage('标题长度不能超过200个字符'),
  body('description').optional().isLength({ max: 1000 }).withMessage('描述长度不能超过1000个字符')
], videoController.updateVideo);

// 删除视频（需要认证且只能删除自己的视频）
router.delete('/:id', authMiddleware, videoController.deleteVideo);

// 管理员删除视频（需要管理员权限，可以删除任何视频）
router.delete('/:id/admin', [authMiddleware, adminMiddleware], videoController.adminDeleteVideo);

// 点赞视频（需要认证）
router.post('/:id/like', authMiddleware, videoController.likeVideo);

// 取消点赞视频（需要认证）
router.delete('/:id/like', authMiddleware, videoController.unlikeVideo);

module.exports = router;